<!-- HTML header for doxygen 1.8.6-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=9">
<meta name="generator" content="Doxygen 1.8.13">
<title>OpenCV:OpenCV配置选项参考</title>
<link href="../../opencv.ico" rel="shortcut icon" type="image/x-icon">
<link href="../../tabs.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../tutorial-utils.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
//<![CDATA[
MathJax.Hub.Config(
{
  TeX: {
      Macros: {
          matTT: [ "\\[ \\left|\\begin{array}{ccc} #1 & #2 & #3\\\\ #4 & #5 & #6\\\\ #7 & #8 & #9 \\end{array}\\right| \\]", 9],
          fork: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ \\end{array} \\right.", 4],
          forkthree: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ #5 & \\mbox{#6}\\\\ \\end{array} \\right.", 6],
          forkfour: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ #5 & \\mbox{#6}\\\\ #7 & \\mbox{#8}\\\\ \\end{array} \\right.", 8],
          vecthree: ["\\begin{bmatrix} #1\\\\ #2\\\\ #3 \\end{bmatrix}", 3],
          vecthreethree: ["\\begin{bmatrix} #1 & #2 & #3\\\\ #4 & #5 & #6\\\\ #7 & #8 & #9 \\end{bmatrix}", 9],
          cameramatrix: ["#1 = \\begin{bmatrix} f_x & 0 & c_x\\\\ 0 & f_y & c_y\\\\ 0 & 0 & 1 \\end{bmatrix}", 1],
          distcoeffs: ["(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \\tau_x, \\tau_y]]]]) \\text{ of 4, 5, 8, 12 or 14 elements}"],
          distcoeffsfisheye: ["(k_1, k_2, k_3, k_4)"],
          hdotsfor: ["\\dots", 1],
          mathbbm: ["\\mathbb{#1}", 1],
          bordermatrix: ["\\matrix{#1}", 1]
      }
  }
}
);
//]]>
</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css">
<link href="../../stylesheet.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<!--#include virtual="/google-search.html"-->
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="../../opencv-logo-small.png"></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">OpenCV
   &#160;<span id="projectnumber">4.5.2</span>
   </div>
   <div id="projectbrief">Open Source Computer Vision</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('../../',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="../../d9/df8/tutorial_root.html">OpenCV Tutorials</a></li><li class="navelem"><a class="el" href="../../df/d65/tutorial_table_of_content_introduction.html">Introduction to OpenCV</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">OpenCV配置选项参考</div>  </div>
</div><!--header-->
<div class="contents">
<div class="toc"><h3>目录</h3>
<ul><li class="level1"><a href="#tutorial_config_reference_intro">Introduction(介绍)</a></li>
<li class="level1"><a href="#tutorial_config_reference_general">General options(常规选项)</a><ul><li class="level2"><a href="#tutorial_config_reference_general_contrib">使用额外模块生成</a></li>
<li class="level2"><a href="#tutorial_config_reference_general_debug">调试生成</a></li>
<li class="level2"><a href="#tutorial_config_reference_general_static">静态生成</a></li>
<li class="level2"><a href="#tutorial_config_reference_general_tests">构建测试、样本和应用程序</a></li>
<li class="level2"><a href="#tutorial_config_reference_general_modules">生成有限的模块集</a></li>
<li class="level2"><a href="#tutorial_config_reference_general_download">下载的依赖项</a></li>
<li class="level2"><a href="#tutorial_config_reference_general_cpu">CPU优化级别</a></li>
</ul>
</li>
<li class="level1"><a href="#tutorial_config_reference_func">功能特性和依赖关系</a><ul><li class="level2"><a href="#tutorial_config_reference_func_hetero">异构计算</a></li>
<li class="level2"><a href="#tutorial_config_reference_func_imgcodecs">图像读写（imgcodecs模块）</a></li>
<li class="level2"><a href="#tutorial_config_reference_func_videoio">视频读写（videoio模块）</a></li>
<li class="level2"><a href="#tutorial_config_reference_func_core">并行处理</a></li>
<li class="level2"><a href="#tutorial_config_reference_highgui">Gabracends（hihgiomduel）</a></li>
<li class="level2"><a href="#tutorial_config_reference_dnn">深度学习神经网络推理后端和选项（dnn模块）</a></li>
</ul>
</li>
<li class="level1"><a href="#tutorial_config_reference_install">安装布局</a><ul><li class="level2"><a href="#tutorial_config_reference_install_root">安装根目录</a></li>
<li class="level2"><a href="#tutorial_config_reference_install_comp">部件和位置</a></li>
</ul>
</li>
<li class="level1"><a href="#tutorial_config_reference_misc">其他特性</a></li>
</ul>
</div>
<div class="textblock"><p><b>上一个教程:</b> <a class="el" href="../../d0/d3d/tutorial_general_install.html">OpenCV installation overview</a></p>
<p><b>下一个教程:</b> <a class="el" href="../../d7/d9f/tutorial_linux_install.html">Installation in Linux</a></p>
<h1><a class="anchor" id="tutorial_config_reference_intro"></a>介绍</h1>
<dl class="section note"><dt>注释</dt><dd>我们假设你读过<a class="el" href="../../d0/d3d/tutorial_general_install.html">OpenCV installation overview</a>指导或有 CMake 经验.</dd></dl>
<p>可以通过几种不同的方式设置配置选项:</p><ul>
<li>命令行:<code>cmake -Doption=value ...</code></li>
<li>初始缓存文件:<code>cmake -C my_options.txt ...</code></li>
<li>通过GUI进行交互</li>
</ul>
<p>在本参考中，我们将使用常规命令行.</p>
<p>大多数选项都可以在OpenCV的根cmake脚本中找到:<code>opencv/CMakeLists.txt</code>. 某些选项可以在特定模块中定义.</p>
<p>可以使用CMake工具打印所有可用选项:</p><div class="fragment"><div class="line"># initial configuration</div><div class="line">cmake ../opencv</div><div class="line"></div><div class="line"># print all options</div><div class="line">cmake -L</div><div class="line"></div><div class="line"># print all options with help message</div><div class="line">cmake -LH</div><div class="line"></div><div class="line"># print all options including advanced</div><div class="line">cmake -LA</div></div><!-- fragment --><p>最流行和最有用的是从<code>WITH_</code>,<code>ENABLE_</code>,<code>BUILD_</code>,<code>OPENCV_</code>.</p>
<p>默认值因平台和其他选项值而异.</p>
<h1><a class="anchor" id="tutorial_config_reference_general"></a>常规选项</h1>
<h2><a class="anchor" id="tutorial_config_reference_general_contrib"></a>使用额外模块生成</h2>
<p><code>OPENCV_EXTRA_MODULES_PATH</code>选项包含以分号分隔的目录列表，其中包含将添加到生成中的额外模块.模块目录必须具有兼容的布局和CMakeLists.txt，可以在<a href="https://github.com/opencv/opencv/wiki/Coding_Style_Guide">编码样式指南</a>.</p>
<p>Examples(示例):</p><div class="fragment"><div class="line"># build with all modules in opencv_contrib</div><div class="line">cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ../opencv</div><div class="line"></div><div class="line"># build with one of opencv_contrib modules</div><div class="line">cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules/bgsegm ../opencv</div><div class="line"></div><div class="line"># build with two custom modules (semicolon must be escaped in bash)</div><div class="line">cmake -DOPENCV_EXTRA_MODULES_PATH=../my_mod1\;../my_mod2 ../opencv</div></div><!-- fragment --><dl class="section note"><dt>注释</dt><dd>仅支持0级和1级深模块位置，以下命令将引发错误:<div class="fragment"><div class="line">cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib ../opencv</div></div><!-- fragment --></dd></dl>
<h2><a class="anchor" id="tutorial_config_reference_general_debug"></a>调试生成</h2>
<p><code>CMAKE_BUILD_TYPE</code>选项可用于启用调试生成；生成的二进制文件将包含调试符号，大多数编译器优化将被关闭.要在发布版本中启用调试符号，请打开<code>BUILD_WITH_DEBUG_INFO</code>选项打开.</p>
<p>在某些平台（如Linux）上，必须在配置阶段设置构建类型:</p><div class="fragment"><div class="line">cmake -DCMAKE_BUILD_TYPE=Debug ../opencv</div><div class="line">cmake --build .</div></div><!-- fragment --><p>在其他平台上，可以在同一生成目录中生成不同类型的生成（例如Visual Studio、XCode）:</p><div class="fragment"><div class="line">cmake &lt;options&gt; ../opencv</div><div class="line">cmake --build . --config Debug</div></div><!-- fragment --><p>如果您使用GNU libstdc++（GCC的默认值），那么可以打开<code>ENABLE_GNU_STL_DEBUG</code>选项，那么C++库将在调试模式中使用，例如在向量元素访问期间将索引绑定检查.</p>
<p>可以使用禁用多种优化<code>CV_DISABLE_OPTIMIZATION</code>option(选项):</p><ul>
<li>一些第三方库（例如IPP、Lapack、Eigen）</li>
<li>显式矢量化实现（通用内部函数、原始内部函数等）</li>
<li>已调度优化</li>
<li>显式循环展开</li>
</ul>
<dl class="section see"><dt>另请参见</dt><dd><a href="https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html">https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html</a> </dd>
<dd>
<a href="https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_macros.html">https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_macros.html</a> </dd>
<dd>
<a href="https://github.com/opencv/opencv/wiki/CPU-optimizations-build-options">https://github.com/opencv/opencv/wiki/CPU-optimizations-build-options</a></dd></dl>
<h2><a class="anchor" id="tutorial_config_reference_general_static"></a>静态生成</h2>
<p><code>BUILD_SHARED_LIBS</code>选项控制是生成动态（.dll、.so、.dylib）还是静态（.a、.lib）库.默认值取决于目标平台，在大多数情况下是<code>ON</code>.</p>
<p>例子:</p><div class="fragment"><div class="line">cmake -DBUILD_SHARED_LIBS=OFF ../opencv</div></div><!-- fragment --><dl class="section see"><dt>另请参见</dt><dd><a href="https://en.wikipedia.org/wiki/Static_library">https://en.wikipedia.org/wiki/Static_library</a></dd></dl>
<p><code>ENABLE_PIC</code>设置<a href="https://cmake.org/cmake/help/latest/variable/CMAKE_POSITION_INDEPENDENT_CODE.html">CMAKE\位置\独立\代码</a>选项.它启用或禁用“位置无关代码”的生成.在生成要链接到动态库的动态库或静态库时，必须启用此选项.默认值为<code>ON</code>.</p>
<dl class="section see"><dt>另请参见</dt><dd><a href="https://en.wikipedia.org/wiki/Position-independent_code">https://en.wikipedia.org/wiki/Position-independent_code</a></dd></dl>
<h2>生成包配置信息</h2>
<p><code>OPENCV_GENERATE_PKGCONFIG</code>选项启用<code>.pc</code>与标准CMake包一起生成文件.此文件对于不使用CMake进行生成的项目非常有用.</p>
<p>例子:</p><div class="fragment"><div class="line">cmake -DOPENCV_GENERATE_PKGCONFIG=ON ../opencv</div></div><!-- fragment --><dl class="section note"><dt>注释</dt><dd>由于配置过程的复杂性导致<code>.pc</code>文件可能包含第三方依赖项的不完整列表，并且在某些配置中可能无法工作，特别是对于静态构建.自4.x版本以来，官方不支持此功能，默认情况下已禁用.</dd></dl>
<h2><a class="anchor" id="tutorial_config_reference_general_tests"></a>构建测试、样本和应用程序</h2>
<p>有两种测试:准确性(<code>opencv_test_*</code>)和性能(<code>opencv_perf_*</code>). 默认情况下启用测试和应用程序.默认情况下不生成示例，应显式启用.</p>
<p>对应<em>cmake</em>选项:</p><div class="fragment"><div class="line">cmake \</div><div class="line">  -DBUILD_TESTS=ON \</div><div class="line">  -DBUILD_PERF_TESTS=ON \</div><div class="line">  -DBUILD_EXAMPLES=ON \</div><div class="line">  -DBUILD_opencv_apps=ON \</div><div class="line">  ../opencv</div></div><!-- fragment --><h2><a class="anchor" id="tutorial_config_reference_general_modules"></a>生成有限的模块集</h2>
<p>每个模块都是<code>modules</code>目录.可以禁用一个模块:</p><div class="fragment"><div class="line">cmake -DBUILD_opencv_calib3d=OFF ../opencv</div></div><!-- fragment --><p>相反的选择是只构建指定的模块以及它们所依赖的所有模块:</p><div class="fragment"><div class="line">cmake -DBUILD_LIST=calib3d,videoio,ts ../opencv</div></div><!-- fragment --><p>在本例中，我们请求了3个模块，配置脚本已自动确定所有依赖项:</p><div class="fragment"><div class="line">--   OpenCV modules:</div><div class="line">--     To be built:                 calib3d core features2d flann highgui imgcodecs imgproc ts videoio</div></div><!-- fragment --><h2><a class="anchor" id="tutorial_config_reference_general_download"></a>下载的依赖项</h2>
<p>配置脚本可以尝试从internet下载其他库和文件，如果无法做到这一点，相应的功能将被关闭.在某些情况下，可能会发生配置错误.默认情况下，所有文件首先下载到<code>&lt;source&gt;/.cache</code>目录，然后解包或复制到生成目录.可以通过设置环境变量或配置选项来更改下载缓存位置:</p><div class="fragment"><div class="line">export OPENCV_DOWNLOAD_PATH=/tmp/opencv-cache</div><div class="line">cmake ../opencv</div><div class="line"># or</div><div class="line">cmake -DOPENCV_DOWNLOAD_PATH=/tmp/opencv-cache ../opencv</div></div><!-- fragment --><p>如果是通过代理访问，则在运行cmake之前应设置相应的环境变量:</p><div class="fragment"><div class="line">export http_proxy=&lt;proxy-host&gt;:&lt;port&gt;</div><div class="line">export https_proxy=&lt;proxy-host&gt;:&lt;port&gt;</div></div><!-- fragment --><p>下载过程的完整日志可以在build目录中找到-<code>CMakeDownloadLog.txt</code>. 此外，对于每个失败的下载，一个命令将被添加到build目录中的helper脚本中，例如.<code>download_with_wget.sh</code>. 用户可以按原样运行这些脚本，也可以根据需要进行修改.</p>
<h2><a class="anchor" id="tutorial_config_reference_general_cpu"></a>CPU优化级别</h2>
<p>在x86_64机器上，默认情况下，将为SSE3指令集级别编译库.可通过配置选项更改此级别:</p><div class="fragment"><div class="line">cmake -DCPU_BASELINE=AVX2 ../opencv</div></div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>其他平台有自己的指令集级别:<code>VFPV3</code>和<code>NEON</code>手臂上，<code>VSX</code>在PowerPC上.</dd></dl>
<p>有些函数支持调度机制，允许为多个指令集编译它们，并在运行时选择一个指令集.在配置期间可以更改已启用指令集的列表:</p><div class="fragment"><div class="line">cmake -DCPU_DISPATCH=AVX,AVX2 ../opencv</div></div><!-- fragment --><p>要禁用调度机制，此选项应设置为空值:</p><div class="fragment"><div class="line">cmake -DCPU_DISPATCH= ../opencv</div></div><!-- fragment --><p>可以禁用代码的优化部分以进行故障排除和调试:</p><div class="fragment"><div class="line"># disable universal intrinsics</div><div class="line">cmake -DCV_ENABLE_INTRINSICS=OFF ../opencv</div><div class="line"># disable all possible built-in optimizations</div><div class="line">cmake -DCV_DISABLE_OPTIMIZATION=ON ../opencv</div></div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>有关CPU优化选项的更多详细信息，请访问wiki:<a href="https://github.com/opencv/opencv/wiki/CPU-optimizations-build-options">https://github.com/opencv/opencv/wiki/CPU-optimizations-build-options</a></dd></dl>
<h2>分析、覆盖、消毒、硬化、尺寸优化</h2>
<p>以下选项可用于生成具有检测或改进的安全性的特殊生成.默认情况下禁用所有选项.</p>
<p>|选项|编译器|描述||<code>ENABLE_PROFILING</code>|GCC或Clang |启用分析编译器和链接器选项.||<code>ENABLE_COVERAGE</code>|GCC或Clang |启用代码覆盖支持.||<code>OPENCV_ENABLE_MEMORY_SANITIZER</code>|N/A |启用代码中的几个怪癖以帮助记忆消毒剂.||<code>ENABLE_BUILD_HARDENING</code>|GCC、Clang、MSVC |启用编译器选项，减少代码被利用的可能性.||<code>ENABLE_LTO</code>|GCC，Clang，MSVC |启用链路时间优化（LTO）.||<code>ENABLE_THIN_LTO</code>|Clang |启用瘦LTO，它将中间位码合并到二进制文件中，允许用户稍后优化其应用程序|</p>
<dl class="section see"><dt>另请参见</dt><dd><a href="https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html">GCC仪器</a> </dd>
<dd>
<a href="https://en.wikipedia.org/wiki/Hardening_(computing)">建造硬化</a> </dd>
<dd>
<a href="https://en.wikipedia.org/wiki/Interprocedural_optimization">过程间优化</a> </dd>
<dd>
<a href="https://gcc.gnu.org/wiki/LinkTimeOptimization">链路时间优化</a> </dd>
<dd>
<a href="https://clang.llvm.org/docs/ThinLTO.html">Thinlto</a></dd></dl>
<h1><a class="anchor" id="tutorial_config_reference_func"></a>功能特性和依赖关系</h1>
<p>有许多可选的依赖项和特性可以打开或关闭.<em>cmake</em>具有允许打印所有可用配置参数的特殊选项:</p><div class="fragment"><div class="line">cmake -LH ../opencv</div></div><!-- fragment --><h2>选项命名约定</h2>
<p>有三种选项用于控制库的依赖项，它们有不同的前缀:</p><ul>
<li>以开头的选项<code>WITH_</code>启用或禁用依赖项</li>
<li>以开头的选项<code>BUILD_</code>启用或禁用与OpenCV绑定的第三方库的构建和使用</li>
<li>以开头的选项<code>HAVE_</code>指示已启用依赖项，如果无法使用自动检测，则可用于手动启用依赖项.</li>
</ul>
<p>什么时候？<code>WITH_</code>选项已启用:</p><ul>
<li>如果<code>BUILD_</code>选项启用时，将生成第三方库并启用=&gt；<code>HAVE_</code>设置为<code>ON</code></li>
<li>如果<code>BUILD_</code>选项被禁用时，将检测并启用第三方库（如果找到=&gt；<code>HAVE_</code>设置为<code>ON</code>如果找到依赖项</li>
</ul>
<h2><a class="anchor" id="tutorial_config_reference_func_hetero"></a>异构计算</h2>
<h3>CUDA支持</h3>
<p><code>WITH_CUDA</code>（默认值:<em>关</em>)</p>
<p>许多算法都是用CUDA加速实现的，这些函数都位于不同的模块中.CUDA工具包必须作为一个先决条件从NVIDIA官方网站安装.对于3.9以上的cmake版本，OpenCV使用自己的<code>cmake/FindCUDA.cmake</code>脚本，用于更新的版本-与CMake打包的版本.其他选项可用于控制构建过程，例如.<code>CUDA_GENERATION</code>或<code>CUDA_ARCH_BIN</code>. 这些参数尚未记录，请咨询<code>cmake/OpenCVDetectCUDA.cmake</code>有关详细信息，请参阅脚本.</p>
<dl class="section note"><dt>注释</dt><dd>自从OpenCV版本4.0以来，所有CUDA加速算法的实现都转移到了<em>opencv\u contrib公司</em>存储库.建造<em>opencv</em>和<em>opencv_contrib</em>一起检查<a class="el" href="../../db/d05/tutorial_config_reference.html#tutorial_config_reference_general_contrib">Build with extra modules</a>.</dd>
<dd>一些教程可以在相应的部分找到:<a class="el" href="../../da/d2c/tutorial_table_of_content_gpu.html">GPU-Accelerated Computer Vision (cuda module)</a> </dd></dl>
<dl class="section see"><dt>另请参见</dt><dd><a class="el" href="../../d1/d1e/group__cuda.html">CUDA-accelerated Computer Vision</a></dd>
<dd>
<a href="https://en.wikipedia.org/wiki/CUDA">https://en.wikipedia.org/wiki/CUDA</a></dd></dl>
<p>TODO:其他选项:<code>WITH_CUFFT</code>,<code>WITH_CUBLAS</code>,<code>WITH_NVCUVID</code>?</p>
<h3>OpenCL支持</h3>
<p><code>WITH_OPENCL</code>（默认值:<em>开</em>)</p>
<p>通过所谓的“透明API（Transparent-API）”，可以使用多种OpenCL加速算法.这种集成在用户级使用与常规CPU实现相同的功能.如果输入和输出图像参数作为不透明参数传递，则会切换到OpenCL执行分支<a class="el" href="../../d7/d45/classcv_1_1UMat.html">cv::UMat</a>物体.更多信息请参见<a href="https://opencv.org/opencl/">简介</a>和<a class="el" href="../../dc/d83/group__core__opencl.html">OpenCL support</a></p>
<p>在生成时，此功能没有任何先决条件.在运行时期间，需要一个工作的OpenCL运行时来检查它的运行<code>clinfo</code>和/或<code>opencv_version --opencl</code>命令.OpenCL集成的一些参数可以使用环境变量进行修改，例如.<code>OPENCV_OPENCL_DEVICE</code>. 但是，目前还没有关于这个特性的完整文档，所以请检查源代码<code>modules/core/src/ocl.cpp</code>文件以获取详细信息.</p>
<dl class="section see"><dt>另请参见</dt><dd><a href="https://en.wikipedia.org/wiki/OpenCL">https://en.wikipedia.org/wiki/OpenCL</a></dd></dl>
<p>TODO:其他选项:<code>WITH_OPENCL_SVM</code>,<code>WITH_OPENCLAMDFFT</code>,<code>WITH_OPENCLAMDBLAS</code>,<code>WITH_OPENCL_D3D11_NV</code>,<code>WITH_VA_INTEL</code></p>
<h2><a class="anchor" id="tutorial_config_reference_func_imgcodecs"></a>图像读写（imgcodecs模块）</h2>
<h3>内置格式</h3>
<p>OpenCV可以读取以下格式，无需任何第三方库的帮助:</p>
<ul>
<li><a href="https://en.wikipedia.org/wiki/BMP_file_format">BMP</a></li>
<li><a href="https://en.wikipedia.org/wiki/RGBE_image_format">HDR</a>(<code>WITH_IMGCODEC_HDR</code>)</li>
<li><a href="https://en.wikipedia.org/wiki/Sun_Raster">太阳光栅</a>(<code>WITH_IMGCODEC_SUNRASTER</code>)</li>
<li><a href="https://en.wikipedia.org/wiki/Netpbm#File_formats">PPM, PGM, PBM, PFM</a>(<code>WITH_IMGCODEC_PXM</code>,<code>WITH_IMGCODEC_PFM</code>)</li>
</ul>
<h3>PNG, JPEG, TIFF, WEBP support</h3>
<table class="doxtable">
<tr>
<th>格式</th><th>期权</th><th>默认</th><th>强制构建自己的</th></tr>
<tr>
<td><a href="https://en.wikipedia.org/wiki/Portable_Network_Graphics">PNG</a> </td><td><code>WITH_PNG</code> </td><td><em>开</em> </td><td><code>BUILD_PNG</code> </td></tr>
<tr>
<td><a href="https://en.wikipedia.org/wiki/JPEG">JPEG</a> </td><td><code>WITH_JPEG</code> </td><td><em>开</em> </td><td><code>BUILD_JPEG</code> </td></tr>
<tr>
<td><a href="https://en.wikipedia.org/wiki/TIFF">TIFF</a> </td><td><code>WITH_TIFF</code> </td><td><em>开</em> </td><td><code>BUILD_TIFF</code> </td></tr>
<tr>
<td><a href="https://en.wikipedia.org/wiki/WebP">WEBP</a> </td><td><code>WITH_WEBP</code> </td><td><em>开</em> </td><td><code>BUILD_WEBP</code> </td></tr>
<tr>
<td><a href="https://en.wikipedia.org/wiki/OpenJPEG">带OpenJPEG的JPEG2000</a> </td><td><code>WITH_OPENJPEG</code> </td><td><em>开</em> </td><td><code>BUILD_OPENJPEG</code> </td></tr>
<tr>
<td><a href="https://en.wikipedia.org/wiki/JasPer">带JasPer的JPEG2000</a> </td><td><code>WITH_JASPER</code> </td><td><em>开</em>（见注）</td><td><code>BUILD_JASPER</code> </td></tr>
<tr>
<td><a href="https://en.wikipedia.org/wiki/OpenEXR">EXR</a> </td><td><code>WITH_OPENEXR</code> </td><td><em>开</em> </td><td><code>BUILD_OPENEXR</code> </td></tr>
</table>
<p>读取这些格式的图像所需的所有库都包含在OpenCV中，如果在配置阶段找不到这些库，将自动构建这些库.对应<code>BUILD_*</code>选项将强制构建和使用自己的库，在某些平台（如Windows）上默认启用这些选项.</p>
<dl class="section note"><dt>注释</dt><dd>OpenJPEG比JasPer具有更高的优先级，JasPer已被弃用.为了使用JasPer，必须禁用OpenJPEG.</dd></dl>
<h3>GDAL集成</h3>
<p><code>WITH_GDAL</code>（默认值:<em>关</em>)</p>
<p><a href="https://en.wikipedia.org/wiki/GDAL">格达尔</a>是一个更高级别的库，支持读取多种文件格式，包括PNG、JPEG和TIFF.它在打开文件时具有更高的优先级，并且可以覆盖其他后端.将使用cmake包机制搜索此库，请确保已正确安装或手动设置<code>GDAL_DIR</code>环境或cmake变量.</p>
<h3>GDCM集成</h3>
<p><code>WITH_GDCM</code>（默认值:<em>关</em>)</p>
<p>使能够<a href="https://en.wikipedia.org/wiki/DICOM">DICOM</a>医学图像格式支持<a href="https://en.wikipedia.org/wiki/GDCM">GDCM库</a>. 将使用cmake包机制搜索此库，请确保已正确安装或手动设置<code>GDCM_DIR</code>环境或cmake变量.</p>
<h2><a class="anchor" id="tutorial_config_reference_func_videoio"></a>视频读写（videoio模块）</h2>
<p>TODO:videoio的工作原理、注册表、优先级</p>
<h3>视频4Linux</h3>
<p><code>WITH_V4L</code>（Linux系统；默认:<em>开</em>)</p>
<p>使用从相机捕获图像<a href="https://en.wikipedia.org/wiki/Video4Linux">视频4Linux</a>应用程序编程接口.必须安装Linux内核头.</p>
<h3>FFmpeg</h3>
<p><code>WITH_FFMPEG</code>（默认值:<em>开</em>)</p>
<p>与集成<a href="https://en.wikipedia.org/wiki/FFmpeg">FFmpeg</a>用于解码和编码视频文件和网络流的库.这个库可以读写许多流行的视频格式.它由几个组件组成，这些组件必须作为构建的先决条件安装:</p><ul>
<li><em>avcodec</em></li>
<li><em>avformat</em></li>
<li><em>avutil</em></li>
<li><em>swscale</em></li>
<li><em>avresample</em>（可选）</li>
</ul>
<p>Windows平台是一个例外，其中预构建了<a href="https://github.com/opencv/opencv_3rdparty/tree/ffmpeg/master">包含FFmpeg的插件库</a>将在配置阶段下载并复制到<code>bin</code>包含所有生成库的文件夹.</p>
<dl class="section note"><dt>Note</dt><dd><a href="https://en.wikipedia.org/wiki/Libav">Libav</a>可以使用库代替FFmpeg，但不支持这种组合.</dd></dl>
<h3>媒体框架</h3>
<p><code>WITH_GSTREAMER</code>（默认值:<em>开</em>)</p>
<p>启用与的集成<a href="https://en.wikipedia.org/wiki/GStreamer">媒体框架</a>用于解码和编码视频文件、从摄像机和网络流捕获帧的库.可以安装许多插件来扩展支持的格式列表.OpenCV允许运行作为字符串传递给的任意GStreamer管道<a class="el" href="../../d8/dfe/classcv_1_1VideoCapture.html">cv::VideoCapture</a>和<a class="el" href="../../dd/d9e/classcv_1_1VideoWriter.html">cv::VideoWriter</a>物体.</p>
<p>各种GStreamer插件在不同的平台上提供硬件加速的视频处理.</p>
<h3>微软媒体基金会</h3>
<p><code>WITH_MSMF</code>（b）Windows；默认:<em>开</em>)</p>
<p>启用使用Windows内置<a href="https://en.wikipedia.org/wiki/Media_Foundation">媒体基础框架</a>. 可用于从摄像机捕获帧，解码和编码视频文件.此后端具有硬件加速处理支持(<code>WITH_MSMF_DXVA</code>选项，默认为<em>开</em>).</p>
<dl class="section note"><dt>Note</dt><dd>旧版本的Windows（10之前）可能有不兼容的Media Foundation版本，从OpenCV使用时会出现问题.</dd></dl>
<h3>DirectShow公司</h3>
<p><code>WITH_DSHOW</code>（b）Windows；默认:<em>开</em>)</p>
<p>此后端使用较旧的<a href="https://en.wikipedia.org/wiki/DirectShow">DirectShow公司</a>框架.它只能用于从相机捕获帧.现在不赞成使用MSMF后端，尽管两者可以在同一个版本中启用.</p>
<h3>AV基金会</h3>
<p><code>WITH_AVFOUNDATION</code>（苹果公司；默认:<em>开</em>)</p>
<p><a href="https://en.wikipedia.org/wiki/AVFoundation">AV基金会</a>该框架是苹果平台的一部分，可用于从相机捕获帧、编码和解码视频文件.</p>
<h3>其他后端</h3>
<p>有多种不太流行的框架可以用来读写视频.每个都需要安装相应的库或SDK.</p>
<table class="doxtable">
<tr>
<th>期权</th><th>默认</th><th>说明</th></tr>
<tr>
<td><code>WITH_1394</code> </td><td><em>开</em> </td><td><a href="https://en.wikipedia.org/wiki/IEEE_1394#IIDC">IIDC IEEE1394标准</a>支持使用DC1394库</td></tr>
<tr>
<td><code>WITH_OPENNI</code> </td><td><em>关</em> </td><td><a href="https://en.wikipedia.org/wiki/OpenNI">OpenNI</a>可用于从深度传感摄像头捕获数据.已弃用.</td></tr>
<tr>
<td><code>WITH_OPENNI2</code> </td><td><em>关</em> </td><td><a href="https://structure.io/openni">OpenNI2</a>可用于从深度传感摄像头捕获数据.</td></tr>
<tr>
<td><code>WITH_PVAPI</code> </td><td><em>关</em> </td><td><a href="https://www.alliedvision.com/en/support/software-downloads.html">PVAPI</a>是Prosilica GigE相机的传统SDK.已弃用.</td></tr>
<tr>
<td><code>WITH_ARAVIS</code> </td><td><em>关</em> </td><td><a href="https://github.com/AravisProject/aravis">Aravis</a>库用于使用Genicam相机进行视频采集.</td></tr>
<tr>
<td><code>WITH_XIMEA</code> </td><td><em>关</em> </td><td><a href="https://www.ximea.com/">XIMEA</a>摄像头支持.</td></tr>
<tr>
<td><code>WITH_XINE</code> </td><td><em>关</em> </td><td><a href="https://en.wikipedia.org/wiki/Xine">XINE</a>图书馆支持.</td></tr>
<tr>
<td><code>WITH_LIBREALSENSE</code> </td><td><em>关</em> </td><td><a href="https://en.wikipedia.org/wiki/Intel_RealSense">真实感</a>摄像头支持.</td></tr>
<tr>
<td><code>WITH_MFX</code> </td><td><em>关</em> </td><td><a href="http://mediasdk.intel.com/">MediaSDK</a>该库可用于硬件加速解码和编码原始视频流.</td></tr>
<tr>
<td><code>WITH_GPHOTO2</code> </td><td><em>关</em> </td><td><a href="https://en.wikipedia.org/wiki/GPhoto">GPhoto</a>该库可用于从相机捕获帧.</td></tr>
<tr>
<td><code>WITH_ANDROID_MEDIANDK</code> </td><td><em>开</em> </td><td><a href="https://developer.android.com/ndk/guides/stable_apis#libmediandk">MediaNDK</a>从API级别21开始，Android上就可以使用这个库.</td></tr>
</table>
<h3>视频插件</h3>
<p>一些<em>videoio</em>后端可以构建为插件，从而打破对第三方库的严格依赖，并使它们在运行时成为可选的.以下选项可用于控制此机制:</p>
<table class="doxtable">
<tr>
<th>期权</th><th>默认</th><th>说明</th></tr>
<tr>
<td><code>VIDEOIO_ENABLE_PLUGINS</code> </td><td><em>开</em> </td><td>完全启用或禁用插件.</td></tr>
<tr>
<td><code>VIDEOIO_PLUGIN_LIST</code> </td><td><em>空的</em> </td><td>以逗号或分号分隔的要编译为插件的后端名称列表.支持的名称是<em>ffmpeg</em>,<em>gstreamer公司</em>,<em>msmf</em>,<em>mfx</em>和<em>全部的</em>.</td></tr>
<tr>
<td><code>VIDEOIO_ENABLE_STRICT_PLUGIN_CHECK</code> </td><td><em>开</em> </td><td>启用严格的运行时版本检查以仅允许使用相同版本的OpenCV构建插件.</td></tr>
</table>
<h2><a class="anchor" id="tutorial_config_reference_func_core"></a>并行处理</h2>
<p>一些OpenCV算法可以使用多线程来加速处理.OpenCV可以用一个线程后端构建.</p>
<table class="doxtable">
<tr>
<th>后端</th><th>期权</th><th>默认</th><th>站台</th><th>说明</th></tr>
<tr>
<td>线程</td><td><code>WITH_PTHREADS_PF</code> </td><td><em>开</em> </td><td>类Unix</td><td>默认后端基于<a href="https://en.wikipedia.org/wiki/POSIX_Threads">线程</a>库在Linux、Android和其他类似Unix的平台上可用.线程池是在OpenCV中实现的，可以通过环境变量进行控制<code>OPENCV_THREAD_POOL_*</code>. 请登记来源<em>模块/core/src/parallel\u impl.cpp</em>文件以获取详细信息.</td></tr>
<tr>
<td>并发</td><td>不适用</td><td><em>开</em> </td><td>Windows</td><td><a href="https://docs.microsoft.com/en-us/cpp/parallel/concrt/concurrency-runtime">并发运行时</a>在Windows上可用并将被打开<em>开</em>在支持的平台上，除非启用了其他后端.</td></tr>
<tr>
<td>GCD公司</td><td>不适用</td><td><em>开</em> </td><td>Apple</td><td><a href="https://en.wikipedia.org/wiki/Grand_Central_Dispatch">中央大调度</a>可在Apple平台上使用，并将<em>开</em>除非启用了其他后端，否则将自动执行.使用全局系统线程池.</td></tr>
<tr>
<td>待定</td><td><code>WITH_TBB</code> </td><td><em>关</em> </td><td>多个</td><td><a href="https://en.wikipedia.org/wiki/Threading_Building_Blocks">线程构建模块</a>是一个用于并行编程的跨平台库.</td></tr>
<tr>
<td>OpenMP接口</td><td><code>WITH_OPENMP</code> </td><td><em>关</em> </td><td>多个</td><td><a href="https://en.wikipedia.org/wiki/OpenMP">OpenMP接口</a>API依赖于编译器支持.</td></tr>
<tr>
<td>HPX公司</td><td><code>WITH_HPX</code> </td><td><em>关</em> </td><td>多个</td><td><a href="https://en.wikipedia.org/wiki/HPX">高性能ParallelX</a>是一个实验性的后端，更适合多处理器环境.</td></tr>
</table>
<dl class="section note"><dt>Note</dt><dd>OpenCV可以从GitHub下载并构建TBB库，这个功能可以通过<code>BUILD_TBB</code>选项.</dd></dl>
<h2><a class="anchor" id="tutorial_config_reference_highgui"></a>Gabracends（hihgiomduel）</h2>
<p>OpenCV依赖于各种GUI库来绘制窗口.</p>
<table class="doxtable">
<tr>
<th>期权</th><th>默认</th><th>站台</th><th>说明</th></tr>
<tr>
<td><code>WITH_GTK</code> </td><td><em>开</em> </td><td>Linux</td><td><a href="https://en.wikipedia.org/wiki/GTK">GTK</a>是Linux和Unix中常见的工具箱，类似于OS-es.默认情况下，如果找到，将使用版本3，可以使用<code>WITH_GTK_2_X</code>选项.</td></tr>
<tr>
<td><code>WITH_WIN32UI</code> </td><td><em>开</em> </td><td>Windows</td><td><a href="https://en.wikipedia.org/wiki/Windows_API">葡萄酒</a>是Windows中的标准GUI API.</td></tr>
<tr>
<td>不适用</td><td><em>开</em> </td><td>macOS</td><td><a href="https://en.wikipedia.org/wiki/Cocoa_(API)">可可</a>是macOS中使用的框架.</td></tr>
<tr>
<td><code>WITH_QT</code> </td><td><em>关</em> </td><td>跨平台</td><td><a href="https://en.wikipedia.org/wiki/Qt_(software)">Qt</a>是一个跨平台的GUI框架.</td></tr>
</table>
<dl class="section note"><dt>Note</dt><dd>使用Qt支持编译的OpenCV支持高级<em>highgui</em>接口，参见<a class="el" href="../../dc/d46/group__highgui__qt.html">Qt New Functions</a>详情.</dd></dl>
<h3>OpenGL</h3>
<p><code>WITH_OPENGL</code>（默认值:<em>关</em>)</p>
<p>OpenGL集成可以用来绘制硬件加速的窗口，它有以下后端:GTK、WIN32和Qt.并支持与OpenGL的基本互操作性，请参见<a class="el" href="../../d2/d3c/group__core__opengl.html">OpenGL interoperability</a>和<a class="el" href="../../df/d24/group__highgui__opengl.html">OpenGL support</a>详情.</p>
<h2><a class="anchor" id="tutorial_config_reference_dnn"></a>深度学习神经网络推理后端和选项（dnn模块）</h2>
<p>OpenCV有自己的DNN推理模块，该模块有自己的内置引擎，但也可以使用其他库进行优化处理.可以在单个构建中启用多个后端.选择在运行时自动或手动进行.</p>
<table class="doxtable">
<tr>
<th>期权</th><th>默认</th><th>说明</th></tr>
<tr>
<td><code>WITH_PROTOBUF</code> </td><td><em>开</em> </td><td>使能够<a href="https://en.wikipedia.org/wiki/Protocol_Buffers">原虫</a>图书馆搜索.OpenCV可以构建自己的库副本，也可以使用外部的库副本.此依赖关系是<em>dnn</em>模块，如果找不到，模块将被禁用.</td></tr>
<tr>
<td><code>BUILD_PROTOBUF</code> </td><td><em>开</em> </td><td>生成自己的副本<em>protobuf</em>. 如果要使用外部库，则必须禁用.</td></tr>
<tr>
<td><code>PROTOBUF_UPDATE_FILES</code> </td><td><em>关</em> </td><td>重新生成所有.proto文件.<em>protoc</em>与所用版本兼容的编译器<em>protobuf</em>必须安装.</td></tr>
<tr>
<td><code>OPENCV_DNN_OPENCL</code> </td><td><em>开</em> </td><td>启用内置的OpenCL推理后端.</td></tr>
<tr>
<td><code>WITH_INF_ENGINE</code> </td><td><em>关</em> </td><td>使能够<a href="https://github.com/openvinotoolkit/openvino">英特尔推理机（IE）</a>后端.允许以IE格式（.xml+.bin）执行网络.推理机必须作为<a href="https://en.wikipedia.org/wiki/OpenVINO">OpenVINO工具</a>，或者作为从源代码构建的独立库.</td></tr>
<tr>
<td><code>INF_ENGINE_RELEASE</code> </td><td><em>2020040000</em> </td><td>定义绑定到OpenVINO工具箱版本的推理机库的版本.必须是10位字符串，例如.<em>2020040000</em> for OpenVINO 2020.4. </td></tr>
<tr>
<td><code>WITH_NGRAPH</code> </td><td><em>关</em> </td><td>启用Intel NGraph库支持.这个库是推理引擎后端的一部分，它允许执行从OpenCV支持的多种格式的文件中读取的任意网络:Caffe、TensorFlow、PyTorch、Darknet等..必须安装NGraph库，它包含在推理机中.</td></tr>
<tr>
<td><code>OPENCV_DNN_CUDA</code> </td><td><em>关</em> </td><td>启用CUDA后端.<a href="https://en.wikipedia.org/wiki/CUDA">CUDA</a>、库布拉斯和<a href="https://developer.nvidia.com/cudnn">CUDNN</a>必须安装.</td></tr>
<tr>
<td><code>WITH_HALIDE</code> </td><td><em>关</em> </td><td>使用实验性的<a href="https://en.wikipedia.org/wiki/Halide_(programming_language)">Halide</a>后端，它可以在运行时为dnn层生成优化的代码.必须安装卤化物.</td></tr>
<tr>
<td><code>WITH_VULKAN</code> </td><td><em>关</em> </td><td>启用实验性<a href="https://en.wikipedia.org/wiki/Vulkan_(API)">Vulkan</a>后端.不需要其他依赖项，但可以使用外部Vulkan头(<code>VULKAN_INCLUDE_DIRS</code>).</td></tr>
<tr>
<td><code>WITH_TENGINE</code> </td><td><em>关</em> </td><td>启用实验性<a href="https://github.com/OAID/Tengine">天鹅绒</a>ARM CPU的后端.必须安装Tengine库.</td></tr>
</table>
<h1><a class="anchor" id="tutorial_config_reference_install"></a>安装布局</h1>
<h2><a class="anchor" id="tutorial_config_reference_install_root"></a>安装根目录</h2>
<p>要安装生成的二进制文件，应配置根位置.默认值取决于发行版，在Ubuntu中通常设置为<code>/usr/local</code>. 在配置过程中可以更改:</p><div class="fragment"><div class="line">cmake -DCMAKE_INSTALL_PREFIX=/opt/opencv ../opencv</div></div><!-- fragment --><p>此路径可以相对于当前工作目录，在下面的示例中，它将被设置为<code>&lt;absolute-path-to-build&gt;/install</code>:</p><div class="fragment"><div class="line">cmake -DCMAKE_INSTALL_PREFIX=install ../opencv</div></div><!-- fragment --><p>生成库后，可以使用以下命令将所有文件复制到配置的安装位置:</p><div class="fragment"><div class="line">cmake --build . --target install</div></div><!-- fragment --><p>将二进制文件安装到系统位置（例如.<code>/usr/local</code>)作为普通用户，必须以提升的权限运行上一个命令:</p><div class="fragment"><div class="line">sudo cmake --build . --target install</div></div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>在某些平台（Linux）上，可以在安装过程中删除符号信息.二进制文件将变小10-15%，但调试将受到限制:<div class="fragment"><div class="line">cmake --build . --target install/strip</div></div><!-- fragment --></dd></dl>
<h2><a class="anchor" id="tutorial_config_reference_install_comp"></a>部件和位置</h2>
<p>选项可用于控制是否安装库的一部分:</p>
<table class="doxtable">
<tr>
<th>期权</th><th>默认</th><th>说明</th></tr>
<tr>
<td><code>INSTALL_C_EXAMPLES</code> </td><td><em>关</em> </td><td>从中安装C++示例源<em>样品/cpp</em>目录.</td></tr>
<tr>
<td><code>INSTALL_PYTHON_EXAMPLES</code> </td><td><em>关</em> </td><td>从<em>示例/python</em>目录.</td></tr>
<tr>
<td><code>INSTALL_ANDROID_EXAMPLES</code> </td><td><em>关</em> </td><td>安装来自<em>示例/android</em>目录.</td></tr>
<tr>
<td><code>INSTALL_BIN_EXAMPLES</code> </td><td><em>关</em> </td><td>安装预构建的示例应用程序(<code>BUILD_EXAMPLES</code>必须启用）.</td></tr>
<tr>
<td><code>INSTALL_TESTS</code> </td><td><em>关</em> </td><td>安装测试(<code>BUILD_TESTS</code>必须启用）.</td></tr>
<tr>
<td><code>OPENCV_INSTALL_APPS_LIST</code> </td><td><em>全部的</em> </td><td>以逗号或分号分隔的要安装的预构建应用程序列表（从<em>应用程序</em>目录）</td></tr>
</table>
<p>以下选项允许相对于安装前缀修改组件的安装位置.这些选项的默认值取决于平台和其他选项，请检查<em>cmake/OpenCVInstallLayout.cmake</em>文件以获取详细信息.</p>
<table class="doxtable">
<tr>
<th>期权</th><th>组件</th></tr>
<tr>
<td><code>OPENCV_BIN_INSTALL_PATH</code> </td><td>应用程序、动态库(<em>赢</em>)</td></tr>
<tr>
<td><code>OPENCV_TEST_INSTALL_PATH</code> </td><td>测试应用程序</td></tr>
<tr>
<td><code>OPENCV_SAMPLES_BIN_INSTALL_PATH</code> </td><td>示例应用程序</td></tr>
<tr>
<td><code>OPENCV_LIB_INSTALL_PATH</code> </td><td>动态库，导入库(<em>赢</em>)</td></tr>
<tr>
<td><code>OPENCV_LIB_ARCHIVE_INSTALL_PATH</code> </td><td>静态库</td></tr>
<tr>
<td><code>OPENCV_3P_LIB_INSTALL_PATH</code> </td><td>第三方图书馆</td></tr>
<tr>
<td><code>OPENCV_CONFIG_INSTALL_PATH</code> </td><td>cmake配置包</td></tr>
<tr>
<td><code>OPENCV_INCLUDE_INSTALL_PATH</code> </td><td>标头档</td></tr>
<tr>
<td><code>OPENCV_OTHER_INSTALL_PATH</code> </td><td>额外数据文件</td></tr>
<tr>
<td><code>OPENCV_SAMPLES_SRC_INSTALL_PATH</code> </td><td>样品来源</td></tr>
<tr>
<td><code>OPENCV_LICENSES_INSTALL_PATH</code> </td><td>包含的第三方组件的许可证</td></tr>
<tr>
<td><code>OPENCV_TEST_DATA_INSTALL_PATH</code> </td><td>试验数据</td></tr>
<tr>
<td><code>OPENCV_DOC_INSTALL_PATH</code> </td><td>文档</td></tr>
<tr>
<td><code>OPENCV_JAR_INSTALL_PATH</code> </td><td>带有Java绑定的JAR文件</td></tr>
<tr>
<td><code>OPENCV_JNI_INSTALL_PATH</code> </td><td>Java绑定的JNI部分</td></tr>
<tr>
<td><code>OPENCV_JNI_BIN_INSTALL_PATH</code> </td><td>Java绑定的JNI部分的动态库</td></tr>
</table>
<p>以下选项可用于更改常见场景的安装布局:</p>
<table class="doxtable">
<tr>
<th>期权</th><th>默认</th><th>说明</th></tr>
<tr>
<td><code>INSTALL_CREATE_DISTRIB</code> </td><td><em>关</em> </td><td>调整多种内容以生成Windows和Android发行版.</td></tr>
<tr>
<td><code>INSTALL_TO_MANGLED_PATHS</code> </td><td><em>关</em> </td><td>将一个级别添加到多个安装位置以允许并行安装.例如，启用此选项后，标头将被安装到308;/usr/include/opencv-4.4.0_308;而不是308;/usr/include/opencv4_308;.</td></tr>
</table>
<h1><a class="anchor" id="tutorial_config_reference_misc"></a>其他特性</h1>
<table class="doxtable">
<tr>
<th>期权</th><th>默认</th><th>说明</th></tr>
<tr>
<td><code>OPENCV_ENABLE_NONFREE</code> </td><td><em>关</em> </td><td>已知库中包含的某些算法受专利保护，并且在默认情况下被禁用.</td></tr>
<tr>
<td><code>OPENCV_FORCE_3RDPARTY_BUILD</code></td><td><em>关</em> </td><td>全部启用<code>BUILD_</code>立即选择.</td></tr>
<tr>
<td><code>ENABLE_CCACHE</code> </td><td><em>开</em>（在类Unix平台上）</td><td>启用<a href="https://en.wikipedia.org/wiki/Ccache">检查</a>自动检测.此工具包装编译器调用并缓存结果，可以显著提高重新编译时间.</td></tr>
<tr>
<td><code>ENABLE_PRECOMPILED_HEADERS</code> </td><td><em>开</em>（对于MSVC）</td><td>启用预编译头支持.提高构建时间.</td></tr>
<tr>
<td><code>BUILD_DOCS</code> </td><td><em>关</em> </td><td>启用文档生成(<em>强氧剂</em>,<em>doxygen_cpp</em>,<em>doxygen_python</em>,<em>doxygen_javadoc</em>目标）.<a href="http://www.doxygen.org/index.html">Doxygen</a>必须为C++文档构建安装.Python和<a href="https://en.wikipedia.org/wiki/Beautiful_Soup_(HTML_parser)">美丽的灵魂4</a>必须为Python文档生成安装.Java文档构建（JavaSDK的一部分）必须安装Javadoc和Ant.</td></tr>
<tr>
<td><code>ENABLE_PYLINT</code> </td><td><em>开</em>（启用文档或示例时）</td><td>启用python脚本检查<a href="https://en.wikipedia.org/wiki/Pylint">皮林</a>(<em>检查管道</em>目标）.必须安装Pylint.</td></tr>
<tr>
<td><code>ENABLE_FLAKE8</code> </td><td><em>开</em>（启用文档或示例时）</td><td>启用python脚本检查<a href="https://flake8.pycqa.org/">薄片8</a>(<em>检查第8页</em>目标）.必须安装薄片8.</td></tr>
<tr>
<td><code>BUILD_JAVA</code> </td><td><em>开</em> </td><td>启用Java包装器生成.必须安装Java SDK和Ant.</td></tr>
<tr>
<td><code>BUILD_FAT_JAVA_LIB</code> </td><td><em>开</em>（对于静态Android版本）</td><td>生成单个<em>opencv_java</em>包含与Java绑定绑定的所有库功能的动态库.</td></tr>
<tr>
<td><code>BUILD_opencv_python2</code> </td><td><em>开</em> </td><td>生成python2绑定（已弃用）.必须安装带有开发文件和numpy的Python.</td></tr>
<tr>
<td><code>BUILD_opencv_python3</code> </td><td><em>开</em> </td><td>构建python3绑定.必须安装带有开发文件和numpy的Python.</td></tr>
</table>
<p>TODO:需要包含绑定构建的单独教程吗</p>
<h2>自动生成</h2>
<p>一些特性是专门为自动化构建环境添加的，比如连续集成和打包系统.</p>
<table class="doxtable">
<tr>
<th>期权</th><th>默认</th><th>说明</th></tr>
<tr>
<td><code>ENABLE_NOISY_WARNINGS</code> </td><td><em>关</em> </td><td>启用多个编译器警告<em>嘈杂的</em>也就是说，比其他人的重要性低.这些警告通常被忽略，但在某些情况下值得检查.</td></tr>
<tr>
<td><code>OPENCV_WARNINGS_ARE_ERRORS</code> </td><td><em>关</em> </td><td>将编译器警告视为错误.生成将停止.</td></tr>
<tr>
<td><code>ENABLE_CONFIG_VERIFICATION</code> </td><td><em>关</em> </td><td>对于每个启用的依赖项(<code>WITH_</code>选项）验证是否已找到并启用(<code>HAVE_</code>变量）.默认情况下，如果找不到依赖项，功能将自动关闭，但启用此选项后，cmake配置将失败.方便的包装系统，需要稳定的图书馆配置不依赖于环境的波动.</td></tr>
<tr>
<td><code>OPENCV_CMAKE_HOOKS_DIR</code> </td><td><em>空的</em> </td><td>OpenCV允许通过在每个阶段和子阶段添加定制的钩子脚本来定制配置过程.在不同的配置阶段之前和之后，将包含位于该变量设置的目录中的具有预定义名称的cmake脚本.文件名示例:<em>CMAKE\初始化.CMAKE</em>,<em>预\u CMAKE \u BOOTSTRAP.CMAKE</em>,<em>发布\u CMAKE \u BOOTSTRAP.CMAKE</em>等等..其他名称没有文档记录，可以通过搜索<em>ocv\ cmake\ U挂钩</em>宏调用.</td></tr>
<tr>
<td><code>OPENCV_DUMP_HOOKS_FLOW</code> </td><td><em>关</em> </td><td>在每个cmake钩子脚本调用上启用调试消息打印.</td></tr>
</table>
<h1>其他未记录的选项</h1>
<p><code>BUILD_ANDROID_PROJECTS</code> <code>BUILD_ANDROID_EXAMPLES</code> <code>ANDROID_HOME</code> <code>ANDROID_SDK</code> <code>ANDROID_NDK</code> <code>ANDROID_SDK_ROOT</code></p>
<p><code>CMAKE_TOOLCHAIN_FILE</code></p>
<p><code>WITH_CAROTENE</code> <code>WITH_CPUFEATURES</code> <code>WITH_EIGEN</code> <code>WITH_OPENVX</code> <code>WITH_CLP</code> <code>WITH_DIRECTX</code> <code>WITH_VA</code> <code>WITH_LAPACK</code> <code>WITH_QUIRC</code> <code>BUILD_ZLIB</code> <code>BUILD_ITT</code> <code>WITH_IPP</code> <code>BUILD_IPP_IW</code> </p>
</div></div><!-- contents -->
<!-- HTML footer for doxygen 1.8.6-->
<!-- start footer part -->
<hr class="footer"><address class="footer"><small>Generated on Fri Apr 2 2021 11:36:36 for OpenCV by<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen">
</a> 1.8.13
</small></address>
<script type="text/javascript">
//<![CDATA[
addTutorialsButtons();
//]]>
</script>
</body>
</html>
